﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;


namespace Quidsi.Services.Web.Models
{
    // The MetadataTypeAttribute identifies FeatureMetadata as the class
    // that carries additional metadata for the Feature class.
    [MetadataTypeAttribute(typeof(Feature.FeatureMetadata))]
    public partial class Feature
    {

        // This class allows you to attach custom attributes to properties
        // of the Feature class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class FeatureMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private FeatureMetadata()
            {
            }

            public int Id { get; set; }

            public bool IsOnScheduleBoard { get; set; }

            public string TileColor { get; set; }

            public double TileTopCellPosition { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TeamLeadMetadata as the class
    // that carries additional metadata for the TeamLead class.
    [MetadataTypeAttribute(typeof(TeamLead.TeamLeadMetadata))]
    public partial class TeamLead
    {

        // This class allows you to attach custom attributes to properties
        // of the TeamLead class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TeamLeadMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TeamLeadMetadata()
            {
            }

            public int BaseResourceCount { get; set; }

            public int CreatedBy { get; set; }

            public DateTime CreatedDate { get; set; }

            public int Id { get; set; }

            public bool IsActive { get; set; }

            public int ModifiedBy { get; set; }

            public DateTime ModifiedDate { get; set; }

            public string Name { get; set; }

            [Include]
            public EntityCollection<TeamLeadResource> TeamLeadResources { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TeamLeadResourceMetadata as the class
    // that carries additional metadata for the TeamLeadResource class.
    [MetadataTypeAttribute(typeof(TeamLeadResource.TeamLeadResourceMetadata))]
    public partial class TeamLeadResource
    {

        // This class allows you to attach custom attributes to properties
        // of the TeamLeadResource class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TeamLeadResourceMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TeamLeadResourceMetadata()
            {
            }

            public int CreatedBy { get; set; }

            public DateTime CreatedDate { get; set; }

            public DateTime EffectiveDate { get; set; }

            public int Id { get; set; }

            public int ModifiedBy { get; set; }

            public DateTime ModifiedDate { get; set; }

            public int ResourceChange { get; set; }

            public TeamLead TeamLead { get; set; }

            public int TeamLeadId { get; set; }
        }
    }
}
